// components/pay-dialog/index.js
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    // 控制弹窗显示/隐藏
    visible: {
      type: Boolean,
      value: false
    },
    // 支付金额
    amount: {
      type: Number,
      value: 19.9
    },
    // 余额抵扣金额
    balanceDeduction: {
      type: Number,
      value: 1
    },
    // 可用余额
    availableBalance: {
      type: Number,
      value: 100
    },
    // 是否显示余额抵扣选项
    showBalanceOption: {
      type: Boolean,
      value: true
    }
  },

  /**
   * 组件的初始数据
   */
  data: {
    // 当前选中的支付方式: 'balance' | 'wechat'
    selectedPaymentMethod: 'balance'
  },

  /**
   * 组件的方法列表
   */
  methods: {
    /**
     * 显示弹窗
     */
    show() {
      this.setData({
        visible: true,
        selectedPaymentMethod: this.properties.showBalanceOption ? 'balance' : 'wechat'
      });
    },

    /**
     * 隐藏弹窗
     */
    hide() {
      this.setData({
        visible: false
      });
      // 触发关闭事件
      this.triggerEvent('close');
    },

    /**
     * 点击背景遮罩关闭弹窗
     */
    onOverlayTap() {
      this.hide();
    },

    /**
     * 阻止弹窗内容区域的点击事件冒泡
     */
    onContentTap() {
      // 阻止事件冒泡，防止点击内容区域关闭弹窗
    },

    /**
     * 选择支付方式
     */
    onPaymentMethodSelect(e) {
      const method = e.currentTarget.dataset.method;
      this.setData({
        selectedPaymentMethod: method
      });
    },

    /**
     * 确认支付
     */
    onConfirmPay() {
      const paymentData = {
        method: this.data.selectedPaymentMethod,
        amount: this.properties.amount,
        balanceDeduction: this.data.selectedPaymentMethod === 'balance' ? this.properties.balanceDeduction : 0
      };

      // 直接关闭可见性但不触发 close 事件，避免父页面误判为“取消”
      this.setData({
        visible: false
      });
      // 触发确认支付事件
      this.triggerEvent('confirm', paymentData);
    },

    /**
     * 获取实际支付金额
     */
    getActualPayAmount() {
      if (this.data.selectedPaymentMethod === 'balance') {
        return Math.max(0, this.properties.amount - this.properties.balanceDeduction);
      }
      return this.properties.amount;
    }
  },

  /**
   * 监听属性变化
   */
  observers: {
    'visible': function(visible) {
      if (visible) {
        this.setData({
          selectedPaymentMethod: this.properties.showBalanceOption ? 'balance' : 'wechat'
        });
      }
    }
  }
})
